package editorarquivobmg.service;

import editorarquivobmg.codificacao.ICodificacao;
import editorarquivobmg.gui.TelaPrincipal;
import editorarquivobmg.model.BmgFile;
import editorarquivobmg.util.ConversorTexto;
import editorarquivobmg.util.ManipuladorDados;
import java.io.File;

public class ManipuladorScriptService {

    public void inserirScript(TelaPrincipal form, BmgFile bmgFilePrincipal, ConversorTexto parser, ManipuladorArquivoService manipuladorArquivo, ICodificacao codificacao, BmgFileService bmgFileService) throws Exception {
        File arquivo;
        byte[] data;
        String texto;
        if (bmgFilePrincipal != null) {
            arquivo = manipuladorArquivo.abrirScript(form);
            data = ManipuladorDados.obterBytesIntervalo(ManipuladorDados.obterBytes(arquivo), 2);
            texto = new String(data, codificacao.getCodificacao());
            String[] iTexto = texto.split("\n############");
            for (int i = 0; i < iTexto.length; i++) {
                String[] tmp = iTexto[i].split("############\n");
                if (parser != null) {
                    if (tmp.length == 1) {
                        bmgFileService.modificarTexto("", i, parser);
                    } else {
                        bmgFileService.modificarTexto(tmp[1], i, parser);
                    }
                } else {
                    if (tmp.length == 1) {
                        bmgFileService.modificarTexto("", i);
                    } else {
                        bmgFileService.modificarTexto(tmp[1], i);
                    }
                }
            }
        } else {
            throw new Exception("Operação de Abrir Script abortada.");
        }
    }

    public void extrairScript(TelaPrincipal form, BmgFile bmgFilePrincipal, ConversorTexto parser, ManipuladorArquivoService manipuladorArquivo, ICodificacao codificacao) throws Exception {
        if (bmgFilePrincipal != null) {
            if (parser != null) {
                manipuladorArquivo.extrairScript(form, parser, bmgFilePrincipal.getTextos(), codificacao);
            } else {
                manipuladorArquivo.extrairScript(form, bmgFilePrincipal.getTextos(), codificacao);
            }
        }
    }
}
